curl快速下载GitHub Repo指定commit的tar.gz |
您所在的位置:网站首页 › curl 网站500 › curl快速下载GitHub Repo指定commit的tar.gz |
前言
有些时候需要下载GitHub仓库的tar.gz来做一些其他操作;这时候可能最常见的就是去GitHub上找release或者tag里面有提供tar.gz的资源;然后点击下载~~ 但是有些场景可能这种操作就不是很方便了,比如给客户打包源码的;快速指定git的tag或者某个commit_hash , download下来然后对于源码做一些加密什么的,再给到客户现场构建部署~; 这时候我们就会考虑以脚本来切入,以配置文件的姿势来录入一些参数,然后快速拿到一些我们需要的资源~ 这里举一个比较单一的场景来开展这篇文章,往下看~ 常规CURL下载Github Repo.tar.gz 非私有仓 # 指定路径存放并重命名 curl -Ls https://github.com/nodejs/node/tarball/v16.6.2 > node.tar.gz # 保留tar.gz原名字 curl -LsO https://github.com/nodejs/node/tarball/v16.6.2 # -L 参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。 # -s 是silent,就是不输出详细过程 # -O 把输出写到该文件中,保留远程文件的文件名 私有仓 # 可以指定登陆用户和授权token拿到 curl -sL --user "${GITHUB_LOGIN_USER}:${GITHUB_AUTH_TOKEN}" ${GIT_ARCHIVE_URL} >${SAVE_ARCHIVE_PATH} # -u,--user 就是指定用户账号和密码,密码也可以用授权token(支持的情况下)--> --user crper:crper_auth_token 单一场景演示我们这里以下载私有仓的例子说明~ key.txt 变量配置文件 # GITHUB登陆用户 GITHUB_LOGIN_USER= # github授权toke GITHUB_AUTH_TOKEN= # github代码tag或者commit hash # 每一个tag本质上也是对应的一个commit hash REPO_ORG= PROJECT_GIT_REPO_TAG_OR_HASH= PROJECT_COMMON_GIT_REPO_TAG_OR_HASH= WIKI_GIT_REPO_TAG_OR_HASH= WIKI_COMMON_GIT_REPO_TAG_OR_HASH= # 若是需要在整个shell上下文生效,可以带上export,变成临时环境变量~ # 不带export,在执行那个脚本的上下文可以感知到我们定义的这些变量 demo.sh #!/bin/bash # 入口脚本执行路径内src目录的相对路径 SRC_PATH="./src" # 从配置文件读取一些变量定义 init_args() { if [ -f "$SRC_PATH/key.txt" ]; then # . 等同于 source这个命令 . $SRC_PATH/key.txt fi } # 上一条命令执行异常就强行退出 check_exec_result() { if [ $? != 0 ]; then exit 1 fi } # 下载归档资源 download_repo_src() { GIT_REPO_NAME=$1 GIT_REPO_TAG_OR_HASH=$2 SAVE_ARCHIVE_PATH=$3 GIT_ARCHIVE_URL="https://github.com/${REPO_ORG}/${GIT_REPO_NAME}/tarball/${GIT_REPO_TAG_OR_HASH}" echo "Download Git source archive: ${GIT_ARCHIVE_URL}" curl -sL --user "${GITHUB_LOGIN_USER}:${GITHUB_AUTH_TOKEN}" ${GIT_ARCHIVE_URL} >${SAVE_ARCHIVE_PATH} check_exec_result echo "Download Git source archive: ${GIT_ARCHIVE_URL} Success!!" } # 初始化 init_arg # 下载资源 download_repo_src xxx-repo $PROJECT_GIT_REPO_TAG_OR_HASH $SRC_PATH/project.src.tar.gz download_repo_src xxx-repo $WIKI_GIT_REPO_TAG_OR_HASH $SRC_PATH/wiki.src.tar.gz 下载效果图
有时候我们可能需要输出一些构建过程产生的信息,方便追溯或者对比拿到的资源是否正确; FAQ可能有人会说,git clone不是很好用么~~git clone对于需要快速指定commit拿到对应资源来说其实并不友好;git clone 目前来说,只支持分支,仓库,仓库Tag,而commit是需要你clone整个仓库后checkout过去 总结有不对之处请留言,会及时修正,谢谢阅读~ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |